map reduce methods